理解实例方法、类方法、静态方法
2019年10月4日-6日
python中的高级语法有类和装饰器,今天我们学习一下实例方法、类方法和静态方法的区别。其中类方法和静态方法分别用了装饰器中的classmethod和staicmethod关键词。
在此之前我们先要理解实例和类的区别。比如人类是一种类,而刘慈欣是人类中的一员,刘慈欣就是一个类的实例。
class Human(object):
name = "人类"
def instance_method(self, name):
print("执行实例方法, {}{}".format(self, name))
@classmethod
def class_method(cls, name):
print("执行类方法, {}{}".format(cls, name))
@staticmethod
def static_method(name):
print("执行静态方法 {}".format(name))
实例方法
实例是类的具体例子,那么调用实例先要初始化,这里也叫做实例化。
daliu = Human()
daliu
<__main__.Human at 0x1078727f0>
刘慈欣是人类的一员,是一个实例对象,应该具有人类的一般能力,所以像daliu可以使用实例方法、类方法和静态方法。总结, 实例对象
可以调用实例方法、类方法、静态方法。
daliu.instance_method('刘慈欣')
daliu.class_method('刘慈欣')
daliu.static_method('刘慈欣')
执行实例方法, <__main__.Human object at 0x1078727f0>刘慈欣
执行类方法, <class '__main__.Human'>刘慈欣
执行静态方法 刘慈欣
类方法和静态方法
人类是类对象,刘慈欣是人类的一个实例对象,人类是不能有刘慈欣这么特殊的方法。我们看下面这个例子
Human.instance_method('刘慈欣')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-12-fd15e42d8825> in <module>
----> 1 Human.instance_method('刘慈欣')
TypeError: instance_method() missing 1 required positional argument: 'name'
类对象
不能调用实例方法,但能调用类方法和静态方法。
Human.class_method('刘慈欣')
Human.static_method('刘慈欣')
执行类方法, <class '__main__.Human'>刘慈欣
执行静态方法 刘慈欣
推荐阅读
预报名开始| Python爬虫与文本分析工作坊 & 课题申报高级研修班
咨询加请加微信,记得备注“工作坊”
1
欢迎扫码咨询!!